package com.correportuvida;

import java.util.Date;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;

import com.correportuvida.Seguidor.SeguidorDeEntrenamiento;
import com.correportuvida.plan.Entrenamiento;
import com.correportuvida.plan.GeneradorDePlanes;
import com.correportuvida.posicion.ActualizadorDePosicion;
import com.correportuvida.posicion.ControladorDeVelocidad;

public class MainActivity extends FragmentActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		ContenedorDeInstancias contenedor = ContenedorDeInstancias.instance();
		GeneradorDePlanes generador = new GeneradorDePlanes();
		contenedor.setGeneradorDePlanes(generador);
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void iniciarEntrenamiento(View view) {
		ContenedorDeInstancias contenedor = ContenedorDeInstancias.instance();
		contenedor.setPlan(contenedor.getGeneradorDePlanes().generarPlan(null));
		Entrenamiento miEntrenamientoDeHoy = contenedor.getPlan().obtenerEntrenamiento(new Date(1, 1, 2013));
		
		/* Creo el SDE, ADP y CDV */
		ActualizadorDePosicion unActualizador = new ActualizadorDePosicion();
		SeguidorDeEntrenamiento unSeguidor = new SeguidorDeEntrenamiento(unActualizador);
		unActualizador.setSeguidor(unSeguidor);
		ControladorDeVelocidad unControlador = new ControladorDeVelocidad();

		/* Seteo los observers */
		unActualizador.subscribir(unControlador);
//		TODO subscribir el obsPCF al seguidor
		
		/* Seteo las instancias en el contenedor */
		contenedor.setSeguidor(unSeguidor);
		contenedor.setActualizador(unActualizador);
		contenedor.setControlador(unControlador);

		unSeguidor.entrenar(miEntrenamientoDeHoy);
		unActualizador.comenzar();
		
		Intent i = new Intent(this, MapActivity.class);
        startActivity(i);
	}
	
	public void finalizar() {
		finish();
	}	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}		
	
}
